#include "DFS.h"

DFS::DFS()
{
    this->mInicio = 0;
    this->mFim = 7;
    this->mGrafo = new MatrizAdjacencia();
    this->mGrafo->constroi();
}

DFS::DFS(int inicio, int fim)
{
    this->mInicio = inicio;
    this->mFim = fim;
    this->mGrafo = new MatrizAdjacencia();
    this->mGrafo->constroi();
}

void DFS::retornaCaminho()
{
    std::cout << "DFS Caminho: ";
    mPilha.push(this->mInicio);

    while(!mPilha.empty() && mPilha.top() != this->mFim)
    {
        int* filhos = this->mGrafo->getFilhos(mPilha.top());
        std::cout << mPilha.top() << " -> ";
        mPilha.pop();

        for(int i = 0; i < this->mGrafo->getNumVertices(); i++)
        {

            if(filhos[i] > 0)
                mPilha.push(i);
        }
    }
    std::cout << this->mFim << std::endl;
}
